使用枚举或字符串的java Switch语句
使用该开关的最佳方式是什么,因为我知道与Enum一起使用的开关是一种更具可读性和安全性的类型(正如OCP Book所说),所以对于常量值,使用带有Enum的switch语句更好,但是在这里,当我使用带字符串的开关而不是Enum来读取java.util.Calendar
java时
public Calendar build() {
...
switch (type) {
case "gregory":
cal = new GregorianCalendar(zone, locale, true);
break;
case "iso8601":
GregorianCalendar gcal = new GregorianCalendar(zone, locale, true);
gcal.setGregorianChange(new Date(Long.MIN_VALUE));
setWeekDefinition(MONDAY, 4);
cal = gcal;
break;
case "buddhist":
cal = new BuddhistCalendar(zone, locale);
cal.clear();
break;
case "japanese":
cal = new JapaneseImperialCalendar(zone, locale, true);
break;
default:
throw new IllegalArgumentException("unknown calendar type: " + type);
}
...
return cal;
}
# 1 楼答案
当然,使用整数常量或枚举更好。比较字符串时,性能较低。此外,编写原始字符串是不好的,因为如果字符串发生变化,我们将进行错误的比较
谢谢你给我举了一个贫困阶层发展的例子。我们可以see知道
"gregory"
在许多地方被用在内部,而不是作为常数赋值